home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 June / EnigmA AMIGA RUN 08 (1996)(G.R. Edizioni)(IT)[!][issue 1996-06][EARSAN CD VII].iso / earcd / c-lang / dbt.lha / DBT / Example / example.c < prev    next >
C/C++ Source or Header  |  1996-05-17  |  2KB  |  117 lines

  1. //
  2. // example.c
  3. // Version 1.0
  4. // A demo of the DBTools library.
  5. //
  6. // ©1996 Henrik Isaksson.
  7. // All Rights Reserved.
  8. //
  9.  
  10. #include <exec/types.h>
  11. #include <utility/tagitem.h>
  12. #include <proto/exec.h>
  13. #include <proto/dos.h>
  14.  
  15. #include <pragmas/dbtools_pragmas.h>
  16. #include <libraries/dbtools.h>
  17.  
  18. #include <stdio.h>
  19. #include <stdlib.h>
  20.  
  21. /* A macro to open dbtools.library */
  22. #define OPENDBTOOLS    (DBToolsBase=OpenLibrary("dbtools.library",1))
  23.  
  24. struct Library *DBToolsBase;
  25.  
  26. void demo1(void);
  27. void demo2(void);
  28.  
  29. void main(int argc, char *argv[])
  30. {
  31.  if(OPENDBTOOLS) {
  32.     demo1();
  33.     demo2();
  34.  }
  35. }
  36.  
  37. void demo1()
  38. {
  39.  DBase *db;    // The only variable we need
  40.  
  41.  db = DBT_MakeBase DBT_Demo        // Create a new demo base
  42.     DBT_Node            // Add a node
  43.         DBT_ULONG 123        // Add an integer to the node
  44.         DBT_ULONG 321        // Add one more
  45.     DBT_Node            // Add a new node
  46.         DBT_ULONG 456        // Add '456'
  47.     DBT_End;                // To be continued...
  48.  
  49.  DBT_ContBase db            // Continue on the old base db
  50.         DBT_ULONG 654        // Add '654'
  51.         DBT_STRING "string"    // Add a string
  52.  
  53.     DBT_Base DBT_Text            // Create a new text base (and end the demo base)
  54.     DBT_Node
  55.         DBT_STRING "text"    // Add some text
  56.         DBT_STRING "more text"
  57.     DBT_End;                // The End.
  58.  
  59.  // And if we want to extend the demo base:
  60.  
  61.  DBT_ContBase FindBase(db, DBT_Demo)
  62.     DBT_Node
  63.         DBT_STRING "more data"
  64.     DBT_End;
  65.  
  66.  SaveBase("demo.testsave1",db);        // Save the base so we can look at it with DumpDB.
  67. }
  68.  
  69. //
  70. // Demo of dynamic structures
  71. //
  72.  
  73. #define Rect    1    // Name of the structure
  74. #define Left    1
  75. #define Top    2
  76. #define Width    3
  77. #define Height    4
  78.  
  79. #define Text    2    // The second structure
  80. #define TextX    1
  81. #define TextY    2
  82. #define String    3
  83.  
  84. void demo2()
  85. {
  86.  /* First we have to declare the structures: */
  87.  DBase *db=DBT_MakeBase DBT_Demo
  88.         DBT_Node
  89.             DBT_ULONG 0
  90.             DBT_ULONG 0
  91.             DBT_ULONG 0
  92.             DBT_ULONG 0
  93.         DBT_Node
  94.             DBT_ULONG 0
  95.             DBT_ULONG 0
  96.             DBT_ULONG 0
  97.        DBT_End;
  98.  
  99.  /* Setting the fields can be done this way: */
  100.  SetIntN(db, Rect, Left,   10);
  101.  SetIntN(db, Rect, Top,    20);
  102.  SetIntN(db, Rect, Width,  30);
  103.  SetIntN(db, Rect, Height, 40);
  104.  
  105.  SetIntN(db, Text, TextX, 15);
  106.  SetIntN(db, Text, TextY, 25);
  107.  SetIntN(db, Text, String, (ULONG)"This is a test!");
  108.  
  109.  /* To read the fields, do like this... */
  110.  printf("%s\n",GetIntN(db, Text, String));
  111.  /* ...Or like this: */
  112.  printf("%ld, %s\n",INT(Text,TextX),INT(Text,String));
  113.  /* Theese macros only work if the base is called 'db' */
  114.  
  115.  SaveBase("demo.testsave2",db);
  116. }
  117.